package xml;

import static org.junit.Assert.*;

import org.junit.Test;


/**
 * @author Sabrina Mänz, sabrinamaenz@googlemail.com
 * Translation Memories for patent translation
 * UnitTestXML
 * This class tests via unittests whether CreateXML computes the right values for insertion, replacement 
 * and deletion in different positions.
 */
public class UnitTestXML {

	CreateXML test1; CreateXML test2; CreateXML test3; CreateXML test4;
	CreateXML test5; CreateXML test6; CreateXML test7; CreateXML test8;
	CreateXML test9; CreateXML test10; CreateXML test11; CreateXML test12;
	CreateXML test13; CreateXML test14;

	//String s =  Line number ||| Line Content \t 
	//Line Number ||| Line Content (source, tmsource, tmtarget) \t
	// s.TestXML Format
	
	
			//REPLACEMENT
			
			/**
			 * The name of the method describes the tested case and the position of this case.
			 * Repl = Replacement, Ins = Insertion, Del = Deletion
			 * Beg = Begin, Mid = Middle, End
			 * "Comb" means combined cases
			 */
			
			@Test
			public void testReplBeg() {
				test1 = new CreateXML(
		        		 "11|||die stamm ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
		        		 "42|||1-1 2-2 3-3 4-4");
		         assertEquals("Test1: Replacement Anfang",
		 				"die <xml translation=\"trunk is green\"> x </xml>", test1.getTranslation());
		         
			}
			
			@Test
			public void testReplMid() {
				test2 = new CreateXML(
		        		 "11|||der ast ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
		        		 "42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Replacement Mitte",
		 				"<xml translation=\"the\"> x </xml> ast <xml translation=\"is green\"> x </xml>", test2.getTranslation());
		         
			}
			
			@Test
			public void testReplEnd() {
				test3 = new CreateXML(
		        		 "11|||der stamm ist gelb\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Replacement Ende",
		 				"<xml translation=\"the trunk is\"> x </xml> gelb", test3.getTranslation());
		         
			}
			
			//INSERTION
			@Test
			public void testInsBeg() {
				test4 = new CreateXML(
		        		 "11|||sieh der stamm ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Insertion Anfang",
		 				" sieh <xml translation=\"the trunk is green\"> x </xml>", test4.getTranslation());
		         
			}
			
			@Test
			public void testInsMid() {
				test5 = new CreateXML(
		        		 "11|||der stamm der im wald steht ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Insertion Mitte",
		 				"<xml translation=\"the trunk\"> x </xml> der im wald steht " +
		 				"<xml translation=\"is green\"> x </xml>", test5.getTranslation());
		         
			}
			
			@Test
			public void testInsEnd() {
				test6 = new CreateXML(
		        		 "11|||der stamm ist grün -grau\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Insertion Ende",
		 				"<xml translation=\"the trunk is green\"> x </xml> -grau", test6.getTranslation());
		         
			}
			
			//DELETION
			@Test
			public void testDelBeg() {
				test7 = new CreateXML(
		        		 "11|||stamm ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Deletion Anfang",
		 				" <xml translation=\"trunk is green\"> x </xml>", test7.getTranslation());
		         
			}
		
			@Test
			public void testDelMid() {
				test8 = new CreateXML(
		        		 "11|||der stamm grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test1: Deletion Mitte",
		 				"<xml translation=\"the trunk green\"> x </xml>", test8.getTranslation());
		         
			}
			
			@Test
			public void testDelEnd() {
				test9 = new CreateXML(
		        		 "11|||der stamm\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("Test9: Deletion Ende",
		 				"<xml translation=\"the trunk\"> x </xml>", test9.getTranslation());
		         
			}
			
			//correct sentence
			@Test
			public void testCorr() {
				test10 = new CreateXML(
		        		 "11|||der stamm ist grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("TestCorr: ",
		 				"<xml translation=\"the trunk is green\"> x </xml>", test10.getTranslation());
		         
			}
			
			//combined changes
			@Test
			public void comb1() {
				test11 = new CreateXML(
		        		 "11|||der stamm war grün und gelb\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("TestCorr: Ersetzung Mitte, Insertion Ende",
		 				"<xml translation=\"the trunk\"> x </xml> war " +
		 				"<xml translation=\"green\"> x </xml> und gelb", test11.getTranslation());
		         
			}
			
			@Test
			public void comb2() {
				test12 = new CreateXML(
		        		 "11|||gestern war der stamm auf der wiese noch grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("TestCorr: mehrere Insertions",
		 				" gestern war <xml translation=\"the trunk\"> x </xml> auf der wiese noch" +
		 				" <xml translation=\"green\"> x </xml>", test12.getTranslation());
		         
			}
			
			@Test
			public void comb3() {
				test13 = new CreateXML(
		        		 "11|||stamm ist nicht nur ein biologischer begriff grün\t" +
		        		 "35|||der stamm ist grün\t" +
		        		 "42|||the trunk is green\t" +
						"42|||0-0 1-1 2-2 3-3");
		         assertEquals("TestCorr: Deletion, Insertion",
		 				" <xml translation=\"trunk is\"> x </xml> nicht nur ein biologischer begriff " +
		 				"<xml translation=\"green\"> x </xml>", test13.getTranslation());
		         
			}
}
